/**
 * 系统前台公用类
 * 
 * @type
 */

/**
 * 定义包
 * 
 * @param {string}
 *            path 包路径
 * @return {}
 */
nameSpace = function(path) {
	var arr = path.split(".");
	var ns = "";
	for (var i = 0; i < arr.length; i++) {
		if (i > 0)
			ns += ".";
		ns += arr[i];
		eval("if(typeof(" + ns + ") == 'undefined') " + ns + " = new Object();");
	}
};
nameSpace("com.tietiao");
// 当前页面编号
com.tietiao.currmenu = 0;
/**
 * 菜单编号定义
 * 
 * @type
 */
com.tietiao.menu = {
	homePage : 1,
	browse : 2,
	share : 3,
	invite : 4,
	search : 5,
	userHomePage : 6,
	advice : 7,
	privateLetter : 8,
	sets : 9,
	logout : 10,
	help:11,
	login:12
};

/**
 * JS公共常量配置
 * 
 * @type
 */
com.tietiao.common = {
	COMMODITY_PIC_MAX_SIZE : 2097152, // 商品最大图片大小 2M
	COMMODITY_PIC_MIN_SIZE : 0,
	COMMODITY_PIC_WIDTH : 200, // 像素
	COMMODITY_PIC_HEIGTH : 200
	// 像素
};

com.tietiao.Validator = {

	/**
	 * 验证是否是URL
	 * 
	 * @param {String}
	 *            value 要验证的字符串
	 * @return {boolean} 是返回true 否则fasle
	 */
	validateUrl : function(value) {
		var urlRegexp = new RegExp('[a-zA-z]+[^s]*');
		return urlRegexp.test(value);
	},

	/**
	 * 验证是否是非空白字符窜
	 * 
	 * @param {String}
	 *            value 要验证的字符串
	 * @return {boolean} 是返回true 否则fasle
	 */
	isEmptyStr : function(value) {
		return /^\s*$/g.test(value);
	},

	/**
	 * 验证是否是Ip
	 * 
	 * @param {String}
	 *            value 要验证的字符串
	 * @return {boolean} 是返回true 否则fasle
	 */
	validateIp : function(value) {
		var pattern = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
		return pattern.test(value);
	},

	/**
	 * 验证是否是正整数
	 * 
	 * @param {String}
	 *            value 要验证的数字
	 * @return {boolean} 是返回true 否则fasle
	 */
	isPositiveInteger : function(value) {
		return /^\d+$/.test(value);
	},

	/**
	 * 验证是否是email
	 * 
	 * @param {String}
	 *            value 字符串
	 * @return {boolean} 是返回true 否则fasle
	 */
	isEmail : function(value) {
		var pattern = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
		return pattern.test(value);
	},
	/**
	 * 验证给定的obj是否为null或者为undefined
	 * 
	 * @param {}
	 *            obj
	 */
	isNotNullOrUndefined : function(obj) {
		if (obj == null || typeof(obj) == 'undefined') {
			return false;
		}
		return true;
	},
	/**
	 * 判断给定的字符是否为字母或数字组成
	 * 
	 * @param {}
	 *            str
	 * 
	 * @return 'undifined' 给定的字符为null或者undifined true 符合条件 false 不符合条件
	 */
	isLetterOrNum : function(str) {
		if (isNotNullOrUndefined(str)) {
			var reg = /^[0-9a-zA-Z]+$/g;
			return reg.test(str);
		}
		return 'undifined';
	},
	/**
	 * 判断字符由字母或数字，下划线，点号组成，且开头只能是下划线和字母
	 * 
	 * @param {}
	 *            str
	 * 
	 * @return 'undifined' 给定的字符为null或者undifined true 符合条件 false 不符合条件
	 */
	isLegalityName : function(str) {
		if (isNotNullOrUndefined(str)) {
			var reg = /^(a-zA-Z_{1})([A-Za-z0-9_\.])$/g;
			return reg.test(str);
		}
		return 'undifined';
	},
	/**
	 * 检验图片格式
	 * 
	 * @param {string}
	 *            fileName
	 * @return false 非图片类型 true 图片类型
	 */
	checkPicSuffix : function(fileName) {
		if (!/.(gif|jpg|png|bmp)$/.test(fileName.toLowerCase())) {
			return false;
		}
		return true;
	}
};

/**
 * 字符串替换方法
 * 
 * @param {String}
 *            findText 原字符
 * @param {String}
 *            replaceText 用来替换的字符
 * @return {String} 替换后的字符串
 */
String.prototype.replaceAll = function strReplace(findText, replaceText) {
	var str = new String(this);
	while (str.indexOf(findText) != -1) {
		str = str.replace(findText, replaceText);
	}
	return str;
};

/**
 * 获取下拉框中被选中的值
 * 
 * @param {String}
 *            selectId 下拉框ID
 */
com.tietiao.getSelectValue = function(selectId) {
	var selectObject = document.getElementById(selectId);
	return selectObject.options[selectObject.selectedIndex].value;
};

/**
 * 获取radion中选中的值
 * 
 * @param (String)
 *            radioName radio名称
 */
com.tietiao.getRadioValue = function(radioName) {
	var radios = document.getElementsByName(radioName);
	for (var i = 0; i < radios.length; i++) {
		if (radios[i].checked) {
			return radios[i].value;
		}
	}
};

/**
 * 获取复选框中选中的值
 * 
 * @param (String)
 *            checkBoxName 复选框名称
 * @return 返回复选框中选中的值，多值以逗号相隔
 */
com.tietiao.getCheckBoxValue = function(checkBoxName) {

	var value = '';
	var checkBoxs = document.getElementsByName(checkBoxName);

	for (var i = 0; i < checkBoxs.length; i++) {
		if (checkBoxs[i].checked) {
			value += checkBoxs[i].value;
			value += ',';
		}
	}
	if (value.length > 0) {
		value = value.substring(0, value.length - 1);
	}
	return value;
};

/*
 * 描述：跨浏览器的设置 innerHTML 方法 允许插入的 HTML 代码中包含 script 和 style 作者：kenxu
 * <ken@ajaxwing.com> 日期：2006-03-23 参数： el: 合法的 DOM 树中的节点 htmlCode: 合法的 HTML 代码
 * 经测试的浏览器：ie5+, firefox1.5+, opera8.5+
 */
com.tietiao.setInnerHTML = function(el, htmlCode) {
	var ua = navigator.userAgent.toLowerCase();
	if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
		htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
		htmlCode = htmlCode.replace(/<script([^>]*)>/gi, '<script$1 defer>');
		el.innerHTML = htmlCode;
		el.removeChild(el.firstChild);
	} else {
		var el_next = el.nextSibling;
		var el_parent = el.parentNode;
		el_parent.removeChild(el);
		el.innerHTML = htmlCode;
		if (el_next) {
			el_parent.insertBefore(el, el_next);
		} else {
			el_parent.appendChild(el);
		}
	}
};

/**
 * 拼接URL和参数
 * 
 * @param {String}
 *            url 给定的URL
 * @param {Object}
 *            param 给定的参数对象
 */
com.tietiao.mergeUrlParam = function(url, param) {
	var i = 0;
	for (var props in param) {
		if (i == 0) {
			if (url.indexOf("?") <= 0) {
				url = url + "?" + props + "=" + param[props];
			} else {
				url = url + "&" + props + "=" + param[props];
			}

		} else {
			url = url + "&" + props + "=" + param[props];
		}
		i++;
	}
	return url;
};
/**
 * 贴条操作
 * 
 * @param {Array
 *            OR String} commodityIds
 * @param {string}
 *            favoriteId 收藏夹ID
 * @param {string}
 *            description 描述
 * @param {function}
 *            sucFun 贴条成功后的操作
 * @param {function }
 *            failFun 贴条失败后的操作
 */
com.tietiao.tietiao = function(commodityIds, favoriteId, description, sucFun,
		failFun) {
	var conditon = {};
	conditon.commodityIds = commodityIds;
	conditon.favoriteId = favoriteId;
	conditon.description = description;
	$.ajax({
				type : "POST",
				dataType : 'json',
				data : $.param(conditon, true),
				cache : false,
				url : "common_common_tietiao.htm",
				success : function(data) {
					sucFun(data.success, data.msg);
				},
				error : function() {
					failFun();
				}
			});
};
/**
 * 撕条操作
 * 
 * @param {Array
 *            or string} commodityIds 撕条的商品ID
 * @param {funciton}
 *            sucFun 贴条成功后的操作
 * @param {function}
 *            failFun 贴条失败后的操作
 */
com.tietiao.ajashitiao = function(commodityIds, sucFun, failFun) {
	conditon = {};
	conditon.commodityIds = commodityIds;
	$.ajax({
				type : "POST",
				dataType : 'json',
				data : $.param(conditon, true),
				cache : false,
				url : "common_common_shitiao.htm",
				success : function(data) {
					sucFun(data.success, data.msg);
				},
				error : function() {
					failFun();
				}
			});
};
/**
 * 倒计时显示提示内容
 * 
 * @param {string}
 *            msg 提示内容
 * @param {integer}
 *            second 倒计时秒数
 * @param ｛Boolean}
 *            lock 是否锁屏
 */
com.tietiao.timeAlert = function(msg, second, lock) {

	var defaultLock = false;
	if (com.tietiao.Validator.isNotNullOrUndefined(lock)) {
		defaultLock = lock;
	}
	var timer;
	$.dialog({
				content : msg,
				lock : defaultLock,
				init : function() {
					var that = this, i = second;
					var fn = function() {
						that.title(i + '秒后关闭');
						!i && that.close();
						i--;
					};
					timer = setInterval(fn, 1000);
					fn();
				},
				close : function() {
					clearInterval(timer);
				}
			}).show();
};

/**
 * 显示我的新私信至domId中
 * 
 * @param {私信DOM
 *            ID} domId
 */
com.tietiao.showLetterCount = function(domId) {
	$.post('./letter_letter_getPrivateLetterCounts.htm', function(data) {
				if (data == '0') {
					$("#" + domId).html('');
					return;
				}
				$("#" + domId).html('(' + data + ')');
			});
};
/**
 * 弹出贴条层
 * 
 * @param{string} commodityIds
 * @parm{string}
 */
com.tietiao.showTietiaos = function(id, commodityIds) {
	$.post('./common_common_showTietiao.htm', {
				commodityId : commodityIds
			}, function(data) {
				$.dialog({
							padding : 0,
							id : id,
							width : 400,
							title : '贴条',
							content : data,
							opacity : 0,
							lock : true
						});
			});
};
/**
 * 设置私信数量
 */
com.tietiao.flusLets = function() {
	$.post('letter_letter_getPriLetNum.htm', function(data) {
				if (data == '0') {
					com.tietiao.clickLetNum();
				} else {
					$('#pri_letter_nums').html(data);
					$('#pri_letter_nums').addClass('msgpopup');
				}
			});
};
/**
 * 点击私信数量时将样式改变
 */
com.tietiao.clickLetNum = function() {
	$('#pri_letter_nums').removeClass('msgpopup');
	$('#pri_letter_nums').html('');
};

/**
 * 发送私信（到私信窗口）
 * 
 * @param {string}
 *            friendUserId
 * @param {string}
 *            friendUserName
 */
com.tietiao.sendLetterView = function(friendUserId, friendUserName) {
	$.post('letter_letter_goSendView.htm', {
				friendUserId : friendUserId,
				friendUserName : friendUserName
			}, function(data) {
				$.dialog({
							padding : 0,
							id : 'send_letter_view_id',
							width : '360px',
							title : '发送私信',
							content : data,
							opacity : 0,
							lock : true
						});
			});
};

$(function() {
			com.tietiao.flusLets();
			// 一分钟属性私信数
			window.setInterval('com.tietiao.flusLets()', '60000');
		});

/**
 * 撕条操作
 * 
 * @param {string}
 *            comId 商品ID
 * @param {string}
 *            claId 需要修改的样式ID
 */
com.tietiao.shitiao = function(comId) {
	com.tietiao.ajashitiao(comId, function(suc, msg) {
				if (suc == 'true') {
					var tieNum = $('#tietiao_num_' + comId).html();
					tieNum = tieNum.substring(1, tieNum.length);
					tieNum = new Number(tieNum) - 1;

					if ($('#tietiao_num_' + comId).length > 0) {
						$('#tietiao_num_' + comId).html('+' + tieNum);
						$('#tie_shi_' + comId).html('<span></span>贴条');
						$('#tie_shi_' + comId).attr(
								'href',
								'javascript:com.tietiao.showTietiaos("show_tie_'
										+ comId + '",' + comId + ')');
						$('#tie_shi_' + comId).attr('class',
								'button button-follow');
					}

					if ($('#tietiao_num_detail_' + comId).length > 0) {
						$('#tietiao_num_detail_' + comId).html('+' + tieNum);
						$('#tie_shi_detail_' + comId).html('<span></span>贴条');
						$('#tie_shi_detail_' + comId).attr(
								'href',
								'javascript:com.tietiao.showTietiaos("show_tie_'
										+ comId + '",' + comId + ')');
						$('#tie_shi_detail_' + comId).attr('class',
								'button button-follow');

						$('#tie_shi_button_' + comId).html('<span></span>贴条');
						$('#tie_shi_button_' + comId).attr(
								'href',
								'javascript:com.tietiao.showTietiaos("show_tie_'
										+ comId + '",' + comId + ')');
						$('#tie_shi_button_' + comId).attr('class', 'follow');
					}

				} else {
					com.tietiao.timeAlert(msg, 1, true);
				}
			}, function() {
				com.tietiao.timeAlert('撕条失败，请稍候再试...', 1, true);
			});
};